
const dev = require('./script/start');
const prod = require('./script/build');
const test = require('./script/test');

'use strict';

module.exports = (options) => {
  const { env } = options;

  // Do this as the first thing so that any code reading it knows the right env.
  process.env.BABEL_ENV = env;
  process.env.NODE_ENV = env;
  process.env.PUBLIC_URL = '';

  // Makes the script crash on unhandled rejections instead of silently
  // ignoring them. In the future, promise rejections that are not handled will
  // terminate the Node.js process with a non-zero exit code.
  process.on('unhandledRejection', err => {
    throw err;
  });

  // Ensure environment variables are read.
  require('./config/env');

  switch(env) {
    case 'development':
      dev(options);
      break;
    case 'production':
      prod(options);
      break;
    case 'test':
      test(options);
      break;
    default:
      dev(options);
      break;
  }
}